package com.xmut.mall.order.vo;

import com.xmut.mall.order.myenum.PromotionsStatusEnum;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

@Data
public class FullDiscountEntityVo {
    private Long id;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 活动结束时间
     */
    private Date endTime;
    /**
     * 活动名称
     */
    private String promotionName;
    /**
     * 店铺ID
     */
    private Long storeId;
    /**
     * 店铺名称
     */
    private String storeName;
    /**
     * 活动开始时间
     */
    private Date startTime;
    /**
     * 优惠券ID
     */
    private String couponId;
    /**
     * 活动说明
     */
    private String description;
    /**
     * 减现金
     */
    private BigDecimal fullMinus;
    /**
     * 优惠门槛金额
     */
    private BigDecimal fullMoney;
    /**
     * 打折
     */
    private BigDecimal fullRate;
    /**
     * 赠品ID
     */
    private String giftId;
    /**
     * 是否赠优惠券
     */
    private Boolean couponFlag;
    /**
     * 是否包邮
     */
    private Boolean freeFreightFlag;
    /**
     * 活动是否减现金
     */
    private Boolean fullMinusFlag;
    /**
     * 是否打折
     */
    private Boolean fullRateFlag;
    /**
     * 是否有赠品
     */
    private Boolean giftFlag;
    /**
     * 是否赠送积分
     */
    private Boolean pointFlag;
    /**
     * 赠送多少积分
     */
    private Integer point;
    /**
     * 活动标题
     */
    private String title;
    /**
     * 范围关联的ID
     */
    private String scopeId;
    /**
     * 关联范围类型
     */
    private String scopeType;

    public Boolean getFullMinusFlag() {
        if (fullMinusFlag == null) {
            return false;
        }
        return fullMinusFlag;
    }

    public Boolean getFullRateFlag() {
        if (fullRateFlag == null) {
            return false;
        }
        return fullRateFlag;
    }

    public Boolean getPointFlag() {
        if (pointFlag == null) {
            return false;
        }
        return pointFlag;
    }

    public Boolean getFreeFreightFlag() {
        if (freeFreightFlag == null) {
            return false;
        }
        return freeFreightFlag;
    }

    public Boolean getGiftFlag() {
        if (giftFlag == null) {
            return false;
        }
        return giftFlag;
    }

    public Boolean getCouponFlag() {
        if (couponFlag == null) {
            return false;
        }
        return couponFlag;
    }

    /**
     * @return 满减活动的状态
     * @see PromotionsStatusEnum
     */
    public String getPromotionStatus() {
        if (endTime == null) {
            return startTime != null ? PromotionsStatusEnum.START.name() : PromotionsStatusEnum.CLOSE.name();
        }
        Date now = new Date();
        if (now.before(startTime)) {
            return PromotionsStatusEnum.NEW.name();
        } else if (endTime.before(now)) {
            return PromotionsStatusEnum.END.name();
        } else if (now.before(endTime)) {
            return PromotionsStatusEnum.START.name();
        }
        return PromotionsStatusEnum.CLOSE.name();
    }

}
